<?php
    namespace Core\ORM\Generateur;

    /**
     * Description of Generateur
     *
     * @author mpetrini
     */
    class Generateur {
        /**
        * Liste toutes les classes que l'on souhaite générer pour ce projet
        * 
        * @return array
        */
        private function listeFichiers() {
            $dirname = dirname(__FILE__).'/Classes/';
            $dir = opendir($dirname); 
            $tabRetour = array();
            while($file = readdir($dir)) {
                if($file != '.' && $file != '..' && $file !== 'Modele.php' && !is_dir($dirname.$file)) {
                    $tabRetour[] = basename($dirname.$file, '.php');
                }
            }
            closedir($dir);
            return $tabRetour;
        }
        
        /**
        * Permet de générer toutes les classes de ce projet
        * 
        * @return boolean
        */
        public function generationClasses() {
            //On liste toutes les classes que l'on souhaite créer
            $fichiers = $this->listeFichiers();
            //On va créer tout les fichiers
            foreach($fichiers as $fichier) {
                $classe = new \ReflectionClass('\Core\ORM\Generateur\Classes\\'.$fichier);
                $instance = $classe->newInstanceArgs();
                $instance->creationFichier();
            }
            return true;
        }
        /**
        * Permet de générer toutes les tables dans la BDD de ce projet
        * 
        * @return boolean
        */
        public function generationTables() {
            //On liste toutes les classes que l'on souhaite créer
            $fichiers = $this->listeFichiers();
            //Tableau des clés étrangères
            $tabClesEtrangeres = array();
            //On va créer tout les fichiers
            foreach($fichiers as $fichier) {
                $classe = new \ReflectionClass('\Core\ORM\Generateur\Classes\\'.$fichier);
                $instance = $classe->newInstanceArgs();
                echo $instance->creationTable($tabClesEtrangeres).'<br>';
            }
            foreach($tabClesEtrangeres as $cle) {
                echo $cle .'<br>';
            }
            return true;
        }
    }
?>